# 0. Imports divers
import plotly.express as px
import plotly.graph_objects as go
import pandas as pd
pd.options.plotting.backend = 'plotly'
import numpy as np
import reader_excel as re # Pour faciliter lecture divers Excel
import reader_simus as rs # Pour faciliter lecture des résultats des simulations
Pour commencer, affichage HTN jalons du transect principal :
dat = re.jalons_transect_principal('data/jtp_20192020.xlsm')
fig = px.scatter(
dat,
symbol='variable',
labels={
"variable": "Jalons & Simulations",
"value": "HTN (cm)"
})
fig
Comparaison avec simulation utilisant le taux de fonte prescrit par [Raleigh & Lundquist, 2012]
x, y = rs.getxyfromvar('/home/boucheta/Documents/Modélisation/Simulations/Col_de_Porte/20192020/Foret/output-MLT-LUNDQUIST/pro/PRO_2019080106_2020080106.nc', 'DSN_T_ISBA')
y = y * 100
y = np.array(y).flatten()
fig.add_trace(go.Scatter(x=x, y=y, mode='lines', name='Lundquist melting rate'))
Comparaison avec d'autres schémas légèrement modifiés :
x, y = rs.getxyfromvar('/home/boucheta/Documents/Modélisation/Simulations/Col_de_Porte/20192020/Foret/output-MLT-X100-LAURE/pro/PRO_2019080106_2020080106.nc', 'DSN_T_ISBA')
y = y * 100
y = np.array(y).flatten()
fig.add_trace(go.Scatter(x=x, y=y, mode='lines', name='Laure melting rate'))
x, y = rs.getxyfromvar('/home/boucheta/Documents/Modélisation/Simulations/Col_de_Porte/20192020/Foret/output-LUNDQUIST/pro/PRO_2019080106_2020080106.nc', 'DSN_T_ISBA')
y = y * 100
y = np.array(y).flatten()
fig.add_trace(go.Scatter(x=x, y=y, mode='lines', name='Lundquist schemes'))
x, y = rs.getxyfromvar('/home/boucheta/Documents/Modélisation/Simulations/Col_de_Porte/20192020/Foret/output/pro/PRO_2019080106_2020080106.nc', 'DSN_T_ISBA')
y = y * 100
y = np.array(y).flatten()
fig.add_trace(go.Scatter(x=x, y=y, mode='lines', name='MEB schemes'))
Finalement, en considérant l'interception comme un puit de masse :
x, y = rs.getxyfromvar('/home/boucheta/Documents/Modélisation/Simulations/Col_de_Porte/20192020/Foret/output-SINK/pro/PRO_2019080106_2020080106.nc', 'DSN_T_ISBA')
y = y * 100
y = np.array(y).flatten()
fig.add_trace(go.Scatter(x=x, y=y, mode='lines', name='Interception as a sink'))
Ou ici en supprimant la décharge :
x, y = rs.getxyfromvar('/home/boucheta/Documents/Modélisation/Simulations/Col_de_Porte/20192020/Foret/output-NO-UNLOADING/pro/PRO_2019080106_2020080106.nc', 'DSN_T_ISBA')
y = y * 100
y = np.array(y).flatten()
fig.add_trace(go.Scatter(x=x, y=y, mode='lines', name='No Unloading'))
dat_dsn = {}
dat_swd = {}
for lai in [2, 4, 6]:
dat_dsn[lai] = rs.getDataFramefromvar('/home/boucheta/Documents/Analyse/sensibility_test_LAI/output_LAI_' + str(lai) + '/pro/PRO_2019080106_2020080106.nc', 'DSN_T_ISBA')
dat_dsn[lai] = dat_dsn[lai].rename(columns={"DSN_T_ISBA" : "LAI=" + str(lai)})
dat_swd[lai] = rs.getDataFramefromvar('/home/boucheta/Documents/Analyse/sensibility_test_LAI/output_LAI_' + str(lai) + '/pro/PRO_2019080106_2020080106.nc', 'SWDN_GN_ISBA')
dat_swd[lai] = dat_swd[lai].rename(columns={"SWDN_GN_ISBA" : "LAI=" + str(lai)})
dat_dsn[2].plot(y='LAI=2', ylabel="DSN_T_ISBA", xlabel='Date') * dat_dsn[4].plot(y='LAI=4') * dat_dsn[6].plot(y='LAI=6')
dat_swd[2].plot(y='LAI=2', ylabel="SWDN_GN_ISBA", xlabel='Date') * dat_swd[4].plot(y='LAI=4') * dat_swd[6].plot(y='LAI=6')
Résultat d'une simulation classique avec MEB pour cette saison :
x, y = rs.getxyfromvar('/home/boucheta/Documents/Modélisation/Simulations/Col_de_Porte/20202021/Foret/output/pro/PRO_2020080106_2021080106.nc', 'DSN_T_ISBA')
y = y * 100
y = np.array(y).flatten()
go.Figure(go.Scatter(x=x, y=y, mode='lines', name='MEB'))